<?php


/**
 * 字符串
 */
if (!function_exists('g_guid_date_unique_no')) {
    function g_guid_date_unique_no()
    {
        return date('ymdHis') . mt_rand(10000, 99999) . substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 2);
    }
}

/**
 * 电话号码
 */
if (!function_exists('g_make_phone')) {
    function g_make_phone()
    {
        $arr = array(
            130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
            144, 147,
            150, 151, 152, 153, 155, 156, 157, 158, 159,
            176, 177, 178,
            180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
        );
        return $arr[array_rand($arr)] . '' . mt_rand(1000, 9999) . '' . mt_rand(1000, 9999);
    }
}

/**
 * 身份证
 */
if (!function_exists('g_make_sfz')) {
    function g_make_sfz()
    {
        //全国区域代码 共3131
        $region = array(110101, 110102, 110105, 110106, 110107, 110108, 110109, 110111, 110112, 110113, 110114, 110115, 110116, 110117, 110228, 110229, 120101, 120102, 120103, 120104, 120105, 120106, 120110, 120111, 120112, 120113, 120114, 120115, 120116, 120221, 120223, 120225, 130101, 130102, 130103, 130104, 130105, 130107, 130108, 130121, 130123, 130124, 130125, 130126, 130127, 130128, 130129, 130130, 130131, 130132, 130133, 130181, 130182, 130183, 130184, 130185, 130201, 130202, 130203, 130204, 130205, 130207, 130208, 130209, 130223, 130224, 130225, 130227, 130229, 130281, 130283, 130301, 130302, 130303, 130304, 130321, 130322, 130323, 130324, 130401, 130402, 130403, 130404, 130406, 130421, 130423, 130424, 130425, 130426, 130427, 130428, 130429, 130430, 130431, 130432, 130433, 130434, 130435, 130481, 130501, 130502, 130503, 130521, 130522, 130523, 130524, 130525, 130526, 130527, 130528, 130529, 130530, 130531, 130532, 130533, 130534, 130535, 130581, 130582, 130601, 130602, 130603, 130604, 130621, 130622, 130623, 130624, 130625, 130626, 130627, 130628, 130629, 130630, 130631, 130632, 130633, 130634, 130635, 130636, 130637, 130638, 130681, 130682, 130683, 130684, 130701, 130702, 130703, 130705, 130706, 130721, 130722, 130723, 130724, 130725, 130726, 130727, 130728, 130729, 130730, 130731, 130732, 130733, 130801, 130802, 130803, 130804, 130821, 130822, 130823, 130824, 130825, 130826, 130827, 130828, 130901, 130902, 130903, 130921, 130922, 130923, 130924, 130925, 130926, 130927, 130928, 130929, 130930, 130981, 130982, 130983, 130984, 131001, 131002, 131003, 131022, 131023, 131024, 131025, 131026, 131028, 131081, 131082, 131101, 131102, 131121, 131122, 131123, 131124, 131125, 131126, 131127, 131128, 131181, 131182, 140101, 140105, 140106, 140107, 140108, 140109, 140110, 140121, 140122, 140123, 140181, 140201, 140202, 140203, 140211, 140212, 140221, 140222, 140223, 140224, 140225, 140226, 140227, 140301, 140302, 140303, 140311, 140321, 140322, 140401, 140402, 140411, 140421, 140423, 140424, 140425, 140426, 140427, 140428, 140429, 140430, 140431, 140481, 140501, 140502, 140521, 140522, 140524, 140525, 140581, 140601, 140602, 140603, 140621, 140622, 140623, 140624, 140701, 140702, 140721, 140722, 140723, 140724, 140725, 140726, 140727, 140728, 140729, 140781, 140801, 140802, 140821, 140822, 140823, 140824, 140825, 140826, 140827, 140828, 140829, 140830, 140881, 140882, 140901, 140902, 140921, 140922, 140923, 140924, 140925, 140926, 140927, 140928, 140929, 140930, 140931, 140932, 140981, 141001, 141002, 141021, 141022, 141023, 141024, 141025, 141026, 141027, 141028, 141029, 141030, 141031, 141032, 141033, 141034, 141081, 141082, 141101, 141102, 141121, 141122, 141123, 141124, 141125, 141126, 141127, 141128, 141129, 141130, 141181, 141182, 150101, 150102, 150103, 150104, 150105, 150121, 150122, 150123, 150124, 150125, 150201, 150202, 150203, 150204, 150205, 150206, 150207, 150221, 150222, 150223, 150301, 150302, 150303, 150304, 150401, 150402, 150403, 150404, 150421, 150422, 150423, 150424, 150425, 150426, 150428, 150429, 150430, 150501, 150502, 150521, 150522, 150523, 150524, 150525, 150526, 150581, 150601, 150602, 150621, 150622, 150623, 150624, 150625, 150626, 150627, 150701, 150702, 150721, 150722, 150723, 150724, 150725, 150726, 150727, 150781, 150782, 150783, 150784, 150785, 150801, 150802, 150821, 150822, 150823, 150824, 150825, 150826, 150901, 150902, 150921, 150922, 150923, 150924, 150925, 150926, 150927, 150928, 150929, 150981, 152201, 152202, 152221, 152222, 152223, 152224, 152501, 152502, 152522, 152523, 152524, 152525, 152526, 152527, 152528, 152529, 152530, 152531, 152921, 152922, 152923, 210101, 210102, 210103, 210104, 210105, 210106, 210111, 210112, 210113, 210114, 210122, 210123, 210124, 210181, 210201, 210202, 210203, 210204, 210211, 210212, 210213, 210224, 210281, 210282, 210283, 210301, 210302, 210303, 210304, 210311, 210321, 210323, 210381, 210401, 210402, 210403, 210404, 210411, 210421, 210422, 210423, 210501, 210502, 210503, 210504, 210505, 210521, 210522, 210601, 210602, 210603, 210604, 210624, 210681, 210682, 210701, 210702, 210703, 210711, 210726, 210727, 210781, 210782, 210801, 210802, 210803, 210804, 210811, 210881, 210882, 210901, 210902, 210903, 210904, 210905, 210911, 210921, 210922, 211001, 211002, 211003, 211004, 211005, 211011, 211021, 211081, 211101, 211102, 211103, 211121, 211122, 211201, 211202, 211204, 211221, 211223, 211224, 211281, 211282, 211301, 211302, 211303, 211321, 211322, 211324, 211381, 211382, 211401, 211402, 211403, 211404, 211421, 211422, 211481, 220101, 220102, 220103, 220104, 220105, 220106, 220112, 220122, 220181, 220182, 220183, 220201, 220202, 220203, 220204, 220211, 220221, 220281, 220282, 220283, 220284, 220301, 220302, 220303, 220322, 220323, 220381, 220382, 220401, 220402, 220403, 220421, 220422, 220501, 220502, 220503, 220521, 220523, 220524, 220581, 220582, 220601, 220602, 220605, 220621, 220622, 220623, 220681, 220701, 220702, 220721, 220722, 220723, 220724, 220801, 220802, 220821, 220822, 220881, 220882, 222401, 222402, 222403, 222404, 222405, 222406, 222424, 222426, 230101, 230102, 230103, 230104, 230108, 230109, 230110, 230111, 230112, 230123, 230124, 230125, 230126, 230127, 230128, 230129, 230182, 230183, 230184, 230201, 230202, 230203, 230204, 230205, 230206, 230207, 230208, 230221, 230223, 230224, 230225, 230227, 230229, 230230, 230231, 230281, 230301, 230302, 230303, 230304, 230305, 230306, 230307, 230321, 230381, 230382, 230401, 230402, 230403, 230404, 230405, 230406, 230407, 230421, 230422, 230501, 230502, 230503, 230505, 230506, 230521, 230522, 230523, 230524, 230601, 230602, 230603, 230604, 230605, 230606, 230621, 230622, 230623, 230624, 230701, 230702, 230703, 230704, 230705, 230706, 230707, 230708, 230709, 230710, 230711, 230712, 230713, 230714, 230715, 230716, 230722, 230781, 230801, 230803, 230804, 230805, 230811, 230822, 230826, 230828, 230833, 230881, 230882, 230901, 230902, 230903, 230904, 230921, 231001, 231002, 231003, 231004, 231005, 231024, 231025, 231081, 231083, 231084, 231085, 231101, 231102, 231121, 231123, 231124, 231181, 231182, 231201, 231202, 231221, 231222, 231223, 231224, 231225, 231226, 231281, 231282, 231283, 232721, 232722, 232723, 310101, 310104, 310105, 310106, 310107, 310108, 310109, 310110, 310112, 310113, 310114, 310115, 310116, 310117, 310118, 310120, 310230, 320101, 320102, 320103, 320104, 320105, 320106, 320107, 320111, 320113, 320114, 320115, 320116, 320124, 320125, 320201, 320202, 320203, 320204, 320205, 320206, 320211, 320281, 320282, 320301, 320302, 320303, 320305, 320311, 320312, 320321, 320322, 320324, 320381, 320382, 320401, 320402, 320404, 320405, 320411, 320412, 320481, 320482, 320501, 320505, 320506, 320507, 320508, 320509, 320581, 320582, 320583, 320585, 320601, 320602, 320611, 320612, 320621, 320623, 320681, 320682, 320684, 320701, 320703, 320705, 320706, 320721, 320722, 320723, 320724, 320801, 320802, 320803, 320804, 320811, 320826, 320829, 320830, 320831, 320901, 320902, 320903, 320921, 320922, 320923, 320924, 320925, 320981, 320982, 321001, 321002, 321003, 321012, 321023, 321081, 321084, 321101, 321102, 321111, 321112, 321181, 321182, 321183, 321201, 321202, 321203, 321281, 321282, 321283, 321284, 321301, 321302, 321311, 321322, 321323, 321324, 330101, 330102, 330103, 330104, 330105, 330106, 330108, 330109, 330110, 330122, 330127, 330182, 330183, 330185, 330201, 330203, 330204, 330205, 330206, 330211, 330212, 330225, 330226, 330281, 330282, 330283, 330301, 330302, 330303, 330304, 330322, 330324, 330326, 330327, 330328, 330329, 330381, 330382, 330401, 330402, 330411, 330421, 330424, 330481, 330482, 330483, 330501, 330502, 330503, 330521, 330522, 330523, 330601, 330602, 330621, 330624, 330681, 330682, 330683, 330701, 330702, 330703, 330723, 330726, 330727, 330781, 330782, 330783, 330784, 330801, 330802, 330803, 330822, 330824, 330825, 330881, 330901, 330902, 330903, 330921, 330922, 331001, 331002, 331003, 331004, 331021, 331022, 331023, 331024, 331081, 331082, 331101, 331102, 331121, 331122, 331123, 331124, 331125, 331126, 331127, 331181, 340101, 340102, 340103, 340104, 340111, 340121, 340122, 340123, 340124, 340181, 340201, 340202, 340203, 340207, 340208, 340221, 340222, 340223, 340225, 340301, 340302, 340303, 340304, 340311, 340321, 340322, 340323, 340401, 340402, 340403, 340404, 340405, 340406, 340421, 340501, 340503, 340504, 340506, 340521, 340522, 340523, 340601, 340602, 340603, 340604, 340621, 340701, 340702, 340703, 340711, 340721, 340801, 340802, 340803, 340811, 340822, 340823, 340824, 340825, 340826, 340827, 340828, 340881, 341001, 341002, 341003, 341004, 341021, 341022, 341023, 341024, 341101, 341102, 341103, 341122, 341124, 341125, 341126, 341181, 341182, 341201, 341202, 341203, 341204, 341221, 341222, 341225, 341226, 341282, 341301, 341302, 341321, 341322, 341323, 341324, 341501, 341502, 341503, 341521, 341522, 341523, 341524, 341525, 341601, 341602, 341621, 341622, 341623, 341701, 341702, 341721, 341722, 341723, 341801, 341802, 341821, 341822, 341823, 341824, 341825, 341881, 350101, 350102, 350103, 350104, 350105, 350111, 350121, 350122, 350123, 350124, 350125, 350128, 350181, 350182, 350201, 350203, 350205, 350206, 350211, 350212, 350213, 350301, 350302, 350303, 350304, 350305, 350322, 350401, 350402, 350403, 350421, 350423, 350424, 350425, 350426, 350427, 350428, 350429, 350430, 350481, 350501, 350502, 350503, 350504, 350505, 350521, 350524, 350525, 350526, 350527, 350581, 350582, 350583, 350601, 350602, 350603, 350622, 350623, 350624, 350625, 350626, 350627, 350628, 350629, 350681, 350701, 350702, 350721, 350722, 350723, 350724, 350725, 350781, 350782, 350783, 350784, 350801, 350802, 350821, 350822, 350823, 350824, 350825, 350881, 350901, 350902, 350921, 350922, 350923, 350924, 350925, 350926, 350981, 350982, 360101, 360102, 360103, 360104, 360105, 360111, 360121, 360122, 360123, 360124, 360201, 360202, 360203, 360222, 360281, 360301, 360302, 360313, 360321, 360322, 360323, 360401, 360402, 360403, 360421, 360423, 360424, 360425, 360426, 360427, 360428, 360429, 360430, 360481, 360482, 360501, 360502, 360521, 360601, 360602, 360622, 360681, 360701, 360702, 360721, 360722, 360723, 360724, 360725, 360726, 360727, 360728, 360729, 360730, 360731, 360732, 360733, 360734, 360735, 360781, 360782, 360801, 360802, 360803, 360821, 360822, 360823, 360824, 360825, 360826, 360827, 360828, 360829, 360830, 360881, 360901, 360902, 360921, 360922, 360923, 360924, 360925, 360926, 360981, 360982, 360983, 361001, 361002, 361021, 361022, 361023, 361024, 361025, 361026, 361027, 361028, 361029, 361030, 361101, 361102, 361121, 361122, 361123, 361124, 361125, 361126, 361127, 361128, 361129, 361130, 361181, 370101, 370102, 370103, 370104, 370105, 370112, 370113, 370124, 370125, 370126, 370181, 370201, 370202, 370203, 370205, 370211, 370212, 370213, 370214, 370281, 370282, 370283, 370284, 370285, 370301, 370302, 370303, 370304, 370305, 370306, 370321, 370322, 370323, 370401, 370402, 370403, 370404, 370405, 370406, 370481, 370501, 370502, 370503, 370521, 370522, 370523, 370601, 370602, 370611, 370612, 370613, 370634, 370681, 370682, 370683, 370684, 370685, 370686, 370687, 370701, 370702, 370703, 370704, 370705, 370724, 370725, 370781, 370782, 370783, 370784, 370785, 370786, 370801, 370802, 370811, 370826, 370827, 370828, 370829, 370830, 370831, 370832, 370881, 370882, 370883, 370901, 370902, 370911, 370921, 370923, 370982, 370983, 371001, 371002, 371081, 371082, 371083, 371101, 371102, 371103, 371121, 371122, 371201, 371202, 371203, 371301, 371302, 371311, 371312, 371321, 371322, 371323, 371324, 371325, 371326, 371327, 371328, 371329, 371401, 371402, 371421, 371422, 371423, 371424, 371425, 371426, 371427, 371428, 371481, 371482, 371501, 371502, 371521, 371522, 371523, 371524, 371525, 371526, 371581, 371601, 371602, 371621, 371622, 371623, 371624, 371625, 371626, 371701, 371702, 371721, 371722, 371723, 371724, 371725, 371726, 371727, 371728, 410101, 410102, 410103, 410104, 410105, 410106, 410108, 410122, 410181, 410182, 410183, 410184, 410185, 410201, 410202, 410203, 410204, 410205, 410211, 410221, 410222, 410223, 410224, 410225, 410301, 410302, 410303, 410304, 410305, 410306, 410311, 410322, 410323, 410324, 410325, 410326, 410327, 410328, 410329, 410381, 410401, 410402, 410403, 410404, 410411, 410421, 410422, 410423, 410425, 410481, 410482, 410501, 410502, 410503, 410505, 410506, 410522, 410523, 410526, 410527, 410581, 410601, 410602, 410603, 410611, 410621, 410622, 410701, 410702, 410703, 410704, 410711, 410721, 410724, 410725, 410726, 410727, 410728, 410781, 410782, 410801, 410802, 410803, 410804, 410811, 410821, 410822, 410823, 410825, 410882, 410883, 410901, 410902, 410922, 410923, 410926, 410927, 410928, 411001, 411002, 411023, 411024, 411025, 411081, 411082, 411101, 411102, 411103, 411104, 411121, 411122, 411201, 411202, 411221, 411222, 411224, 411281, 411282, 411301, 411302, 411303, 411321, 411322, 411323, 411324, 411325, 411326, 411327, 411328, 411329, 411330, 411381, 411401, 411402, 411403, 411421, 411422, 411423, 411424, 411425, 411426, 411481, 411501, 411502, 411503, 411521, 411522, 411523, 411524, 411525, 411526, 411527, 411528, 411601, 411602, 411621, 411622, 411623, 411624, 411625, 411626, 411627, 411628, 411681, 411701, 411702, 411721, 411722, 411723, 411724, 411725, 411726, 411727, 411728, 411729, 419001, 420101, 420102, 420103, 420104, 420105, 420106, 420107, 420111, 420112, 420113, 420114, 420115, 420116, 420117, 420201, 420202, 420203, 420204, 420205, 420222, 420281, 420301, 420302, 420303, 420321, 420322, 420323, 420324, 420325, 420381, 420501, 420502, 420503, 420504, 420505, 420506, 420525, 420526, 420527, 420528, 420529, 420581, 420582, 420583, 420601, 420602, 420606, 420607, 420624, 420625, 420626, 420682, 420683, 420684, 420701, 420702, 420703, 420704, 420801, 420802, 420804, 420821, 420822, 420881, 420901, 420902, 420921, 420922, 420923, 420981, 420982, 420984, 421001, 421002, 421003, 421022, 421023, 421024, 421081, 421083, 421087, 421101, 421102, 421121, 421122, 421123, 421124, 421125, 421126, 421127, 421181, 421182, 421201, 421202, 421221, 421222, 421223, 421224, 421281, 421301, 421303, 421321, 421381, 422801, 422802, 422822, 422823, 422825, 422826, 422827, 422828, 429004, 429005, 429006, 429021, 430101, 430102, 430103, 430104, 430105, 430111, 430112, 430121, 430124, 430181, 430201, 430202, 430203, 430204, 430211, 430221, 430223, 430224, 430225, 430281, 430301, 430302, 430304, 430321, 430381, 430382, 430401, 430405, 430406, 430407, 430408, 430412, 430421, 430422, 430423, 430424, 430426, 430481, 430482, 430501, 430502, 430503, 430511, 430521, 430522, 430523, 430524, 430525, 430527, 430528, 430529, 430581, 430601, 430602, 430603, 430611, 430621, 430623, 430624, 430626, 430681, 430682, 430701, 430702, 430703, 430721, 430722, 430723, 430724, 430725, 430726, 430781, 430801, 430802, 430811, 430821, 430822, 430901, 430902, 430903, 430921, 430922, 430923, 430981, 431001, 431002, 431003, 431021, 431022, 431023, 431024, 431025, 431026, 431027, 431028, 431081, 431101, 431102, 431103, 431121, 431122, 431123, 431124, 431125, 431126, 431127, 431128, 431129, 431201, 431202, 431221, 431222, 431223, 431224, 431225, 431226, 431227, 431228, 431229, 431230, 431281, 431301, 431302, 431321, 431322, 431381, 431382, 433101, 433122, 433123, 433124, 433125, 433126, 433127, 433130, 440101, 440103, 440104, 440105, 440106, 440111, 440112, 440113, 440114, 440115, 440116, 440183, 440184, 440201, 440203, 440204, 440205, 440222, 440224, 440229, 440232, 440233, 440281, 440282, 440301, 440303, 440304, 440305, 440306, 440307, 440308, 440401, 440402, 440403, 440404, 440501, 440507, 440511, 440512, 440513, 440514, 440515, 440523, 440601, 440604, 440605, 440606, 440607, 440608, 440701, 440703, 440704, 440705, 440781, 440783, 440784, 440785, 440801, 440802, 440803, 440804, 440811, 440823, 440825, 440881, 440882, 440883, 440901, 440902, 440903, 440923, 440981, 440982, 440983, 441201, 441202, 441203, 441223, 441224, 441225, 441226, 441283, 441284, 441301, 441302, 441303, 441322, 441323, 441324, 441401, 441402, 441421, 441422, 441423, 441424, 441426, 441427, 441481, 441501, 441502, 441521, 441523, 441581, 441601, 441602, 441621, 441622, 441623, 441624, 441625, 441701, 441702, 441721, 441723, 441781, 441801, 441802, 441821, 441823, 441825, 441826, 441827, 441881, 441882, 445101, 445102, 445121, 445122, 445201, 445202, 445221, 445222, 445224, 445281, 445301, 445302, 445321, 445322, 445323, 445381, 450101, 450102, 450103, 450105, 450107, 450108, 450109, 450122, 450123, 450124, 450125, 450126, 450127, 450201, 450202, 450203, 450204, 450205, 450221, 450222, 450223, 450224, 450225, 450226, 450301, 450302, 450303, 450304, 450305, 450311, 450321, 450322, 450323, 450324, 450325, 450326, 450327, 450328, 450329, 450330, 450331, 450332, 450401, 450403, 450404, 450405, 450421, 450422, 450423, 450481, 450501, 450502, 450503, 450512, 450521, 450601, 450602, 450603, 450621, 450681, 450701, 450702, 450703, 450721, 450722, 450801, 450802, 450803, 450804, 450821, 450881, 450901, 450902, 450921, 450922, 450923, 450924, 450981, 451001, 451002, 451021, 451022, 451023, 451024, 451025, 451026, 451027, 451028, 451029, 451030, 451031, 451101, 451102, 451121, 451122, 451123, 451201, 451202, 451221, 451222, 451223, 451224, 451225, 451226, 451227, 451228, 451229, 451281, 451301, 451302, 451321, 451322, 451323, 451324, 451381, 451401, 451402, 451421, 451422, 451423, 451424, 451425, 451481, 460101, 460105, 460106, 460107, 460108, 460201, 460321, 460322, 460323, 469001, 469002, 469003, 469005, 469006, 469007, 469021, 469022, 469023, 469024, 469025, 469026, 469027, 469028, 469029, 469030, 500101, 500102, 500103, 500104, 500105, 500106, 500107, 500108, 500109, 500110, 500111, 500112, 500113, 500114, 500115, 500116, 500117, 500118, 500119, 500223, 500224, 500226, 500227, 500228, 500229, 500230, 500231, 500232, 500233, 500234, 500235, 500236, 500237, 500238, 500240, 500241, 500242, 500243, 510101, 510104, 510105, 510106, 510107, 510108, 510112, 510113, 510114, 510115, 510121, 510122, 510124, 510129, 510131, 510132, 510181, 510182, 510183, 510184, 510301, 510302, 510303, 510304, 510311, 510321, 510322, 510401, 510402, 510403, 510411, 510421, 510422, 510501, 510502, 510503, 510504, 510521, 510522, 510524, 510525, 510601, 510603, 510623, 510626, 510681, 510682, 510683, 510701, 510703, 510704, 510722, 510723, 510724, 510725, 510726, 510727, 510781, 510801, 510802, 510811, 510812, 510821, 510822, 510823, 510824, 510901, 510903, 510904, 510921, 510922, 510923, 511001, 511002, 511011, 511024, 511025, 511028, 511101, 511102, 511111, 511112, 511113, 511123, 511124, 511126, 511129, 511132, 511133, 511181, 511301, 511302, 511303, 511304, 511321, 511322, 511323, 511324, 511325, 511381, 511401, 511402, 511421, 511422, 511423, 511424, 511425, 511501, 511502, 511503, 511521, 511523, 511524, 511525, 511526, 511527, 511528, 511529, 511601, 511602, 511621, 511622, 511623, 511681, 511701, 511702, 511721, 511722, 511723, 511724, 511725, 511781, 511801, 511802, 511803, 511822, 511823, 511824, 511825, 511826, 511827, 511901, 511902, 511921, 511922, 511923, 512001, 512002, 512021, 512022, 512081, 513221, 513222, 513223, 513224, 513225, 513226, 513227, 513228, 513229, 513230, 513231, 513232, 513233, 513321, 513322, 513323, 513324, 513325, 513326, 513327, 513328, 513329, 513330, 513331, 513332, 513333, 513334, 513335, 513336, 513337, 513338, 513401, 513422, 513423, 513424, 513425, 513426, 513427, 513428, 513429, 513430, 513431, 513432, 513433, 513434, 513435, 513436, 513437, 520101, 520102, 520103, 520111, 520112, 520113, 520114, 520121, 520122, 520123, 520181, 520201, 520203, 520221, 520222, 520301, 520302, 520303, 520321, 520322, 520323, 520324, 520325, 520326, 520327, 520328, 520329, 520330, 520381, 520382, 520401, 520402, 520421, 520422, 520423, 520424, 520425, 520502, 520521, 520522, 520523, 520524, 520525, 520526, 520527, 520602, 520603, 520621, 520622, 520623, 520624, 520625, 520626, 520627, 520628, 522301, 522322, 522323, 522324, 522325, 522326, 522327, 522328, 522601, 522622, 522623, 522624, 522625, 522626, 522627, 522628, 522629, 522630, 522631, 522632, 522633, 522634, 522635, 522636, 522701, 522702, 522722, 522723, 522725, 522726, 522727, 522728, 522729, 522730, 522731, 522732, 530101, 530102, 530103, 530111, 530112, 530113, 530114, 530122, 530124, 530125, 530126, 530127, 530128, 530129, 530181, 530301, 530302, 530321, 530322, 530323, 530324, 530325, 530326, 530328, 530381, 530402, 530421, 530422, 530423, 530424, 530425, 530426, 530427, 530428, 530501, 530502, 530521, 530522, 530523, 530524, 530601, 530602, 530621, 530622, 530623, 530624, 530625, 530626, 530627, 530628, 530629, 530630, 530701, 530702, 530721, 530722, 530723, 530724, 530801, 530802, 530821, 530822, 530823, 530824, 530825, 530826, 530827, 530828, 530829, 530901, 530902, 530921, 530922, 530923, 530924, 530925, 530926, 530927, 532301, 532322, 532323, 532324, 532325, 532326, 532327, 532328, 532329, 532331, 532501, 532502, 532503, 532523, 532524, 532525, 532526, 532527, 532528, 532529, 532530, 532531, 532532, 532601, 532622, 532623, 532624, 532625, 532626, 532627, 532628, 532801, 532822, 532823, 532901, 532922, 532923, 532924, 532925, 532926, 532927, 532928, 532929, 532930, 532931, 532932, 533102, 533103, 533122, 533123, 533124, 533321, 533323, 533324, 533325, 533421, 533422, 533423, 540101, 540102, 540121, 540122, 540123, 540124, 540125, 540126, 540127, 542121, 542122, 542123, 542124, 542125, 542126, 542127, 542128, 542129, 542132, 542133, 542221, 542222, 542223, 542224, 542225, 542226, 542227, 542228, 542229, 542231, 542232, 542233, 542301, 542322, 542323, 542324, 542325, 542326, 542327, 542328, 542329, 542330, 542331, 542332, 542333, 542334, 542335, 542336, 542337, 542338, 542421, 542422, 542423, 542424, 542425, 542426, 542427, 542428, 542429, 542430, 542521, 542522, 542523, 542524, 542525, 542526, 542527, 542621, 542622, 542623, 542624, 542625, 542626, 542627, 610101, 610102, 610103, 610104, 610111, 610112, 610113, 610114, 610115, 610116, 610122, 610124, 610125, 610126, 610201, 610202, 610203, 610204, 610222, 610301, 610302, 610303, 610304, 610322, 610323, 610324, 610326, 610327, 610328, 610329, 610330, 610331, 610401, 610402, 610403, 610404, 610422, 610423, 610424, 610425, 610426, 610427, 610428, 610429, 610430, 610431, 610481, 610501, 610502, 610521, 610522, 610523, 610524, 610525, 610526, 610527, 610528, 610581, 610582, 610601, 610602, 610621, 610622, 610623, 610624, 610625, 610626, 610627, 610628, 610629, 610630, 610631, 610632, 610701, 610702, 610721, 610722, 610723, 610724, 610725, 610726, 610727, 610728, 610729, 610730, 610801, 610802, 610821, 610822, 610823, 610824, 610825, 610826, 610827, 610828, 610829, 610830, 610831, 610901, 610902, 610921, 610922, 610923, 610924, 610925, 610926, 610927, 610928, 610929, 611001, 611002, 611021, 611022, 611023, 611024, 611025, 611026, 620101, 620102, 620103, 620104, 620105, 620111, 620121, 620122, 620123, 620201, 620301, 620302, 620321, 620401, 620402, 620403, 620421, 620422, 620423, 620501, 620502, 620503, 620521, 620522, 620523, 620524, 620525, 620601, 620602, 620621, 620622, 620623, 620701, 620702, 620721, 620722, 620723, 620724, 620725, 620801, 620802, 620821, 620822, 620823, 620824, 620825, 620826, 620901, 620902, 620921, 620922, 620923, 620924, 620981, 620982, 621001, 621002, 621021, 621022, 621023, 621024, 621025, 621026, 621027, 621101, 621102, 621121, 621122, 621123, 621124, 621125, 621126, 621201, 621202, 621221, 621222, 621223, 621224, 621225, 621226, 621227, 621228, 622901, 622921, 622922, 622923, 622924, 622925, 622926, 622927, 623001, 623021, 623022, 623023, 623024, 623025, 623026, 623027, 630101, 630102, 630103, 630104, 630105, 630121, 630122, 630123, 632121, 632122, 632123, 632126, 632127, 632128, 632221, 632222, 632223, 632224, 632321, 632322, 632323, 632324, 632521, 632522, 632523, 632524, 632525, 632621, 632622, 632623, 632624, 632625, 632626, 632721, 632722, 632723, 632724, 632725, 632726, 632801, 632802, 632821, 632822, 632823, 640101, 640104, 640105, 640106, 640121, 640122, 640181, 640201, 640202, 640205, 640221, 640301, 640302, 640303, 640323, 640324, 640381, 640401, 640402, 640422, 640423, 640424, 640425, 640501, 640502, 640521, 640522, 650101, 650102, 650103, 650104, 650105, 650106, 650107, 650109, 650121, 650201, 650202, 650203, 650204, 650205, 652101, 652122, 652123, 652201, 652222, 652223, 652301, 652302, 652323, 652324, 652325, 652327, 652328, 652701, 652722, 652723, 652801, 652822, 652823, 652824, 652825, 652826, 652827, 652828, 652829, 652901, 652922, 652923, 652924, 652925, 652926, 652927, 652928, 652929, 653001, 653022, 653023, 653024, 653101, 653121, 653122, 653123, 653124, 653125, 653126, 653127, 653128, 653129, 653130, 653131, 653201, 653221, 653222, 653223, 653224, 653225, 653226, 653227, 654002, 654003, 654021, 654022, 654023, 654024, 654025, 654026, 654027, 654028, 654201, 654202, 654221, 654223, 654224, 654225, 654226, 654301, 654321, 654322, 654323, 654324, 654325, 654326, 659001, 659002, 659003, 659004);

        $year_start = mktime(0, 0, 0, 1, 1, 1950);
        $year_end = mktime(0, 0, 0, 12, 31, 1992);
        $seed = mt_rand(0, 3130);//total of region code
        $birth = mt_rand($year_start, $year_end);
        $birth_format = date('Ymd', $birth);
        $suffix_a = mt_rand(0, 9);
        $suffix_b = mt_rand(0, 9);
        $suffix_c = mt_rand(0, 9);//male or female
        $base = $region[$seed] . $birth_format . $suffix_a . $suffix_b . $suffix_c;

        return $base . g_calc_suffix($base);
    }
}

if (!function_exists('g_calc_suffix')) {
    function g_calc_suffix($base)
    {
        if (strlen($base) <> 17) {
            die('Invalid Length');
        }
        $factor = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
        $sums = 0;
        for ($i = 0; $i < 17; $i++) {

            $sums += substr($base, $i, 1) * $factor[$i];
        }

        $mods = $sums % 11;//10X98765432

        switch ($mods) {
            case 0:
                return '1';
                break;
            case 1:
                return '0';
                break;
            case 2:
                return 'x';
                break;
            case 3:
                return '9';
                break;
            case 4:
                return '8';
                break;
            case 5:
                return '7';
                break;
            case 6:
                return '6';
                break;
            case 7:
                return '5';
                break;
            case 8:
                return '4';
                break;
            case 9:
                return '3';
                break;
            case 10:
                return '2';
                break;
        }
    }
}

if (!function_exists('g_echo_string')) {
    function g_echo_string($data)
    {
        if (!$data) {
            return "";
        }
        if (is_string($data)) {
            return $data;
        }
        array_walk_recursive($data, function (&$data) {
            $data = (string)$data;
        });
        return $data;
    }
}

/**
 * 生成验证码
 */
if (!function_exists('g_generate_digital')) {
    function g_generate_digital($length)
    {
        $max = "";
        for ($i = 0; $i < $length; $i++) {
            $max .= '9';
        }
        return sprintf('%0' . $length . 's', mt_rand(0, $max));
    }
}

/**
 * 生成邀请码
 */
if (!function_exists('g_generate_code')) {
    function g_generate_code($length)
    {
        $arr = array_merge(range(0, 9), range('A', 'Z'));
        $str = '';
        $arr_len = count($arr);
        for ($i = 0; $i < $length; $i++) {
            $rand = mt_rand(0, $arr_len - 1);
            $str .= $arr[$rand];
        }

        return $str;
    }
}

/**
 * 生成guid不带{}
 * @return mixed
 */
if (!function_exists('g_guid_string')) {
    function g_guid_string()
    {
        $guid = g_guid();
        return str_replace('-', '', str_replace('}', '', str_replace('{', '', $guid)));
    }
}

/**
 * 生成guid
 * @return string guid字符串
 */
if (!function_exists('g_guid')) {
    function g_guid()
    {
        if (function_exists('com_create_guid')) {
            return com_create_guid();
        } else {
            $charId = strtoupper(md5(uniqid(rand(), true)));
            $hyphen = chr(45);
            $uuid = chr(123)
                . substr($charId, 0, 8) . $hyphen
                . substr($charId, 8, 4) . $hyphen
                . substr($charId, 12, 4) . $hyphen
                . substr($charId, 16, 4) . $hyphen
                . substr($charId, 20, 12)
                . chr(125);
            return $uuid;
        }
    }
}

/**
 * 验证邮箱
 */
if (!function_exists('g_check_email')) {
    function g_check_email($email)
    {
        $preg = '/^[a-zA-Z0-9]+([-_.][a-zA-Z0-9]+)*@([a-zA-Z0-9]+[-.])+([a-z]{2,5})$/ims';
        if (preg_match($preg, $email)) {
            return true;
        } else {
            return false;
        }
    }
}

/**
 * 验证手机号
 */
if (!function_exists('g_check_phone')) {
    function g_check_phone($phone)
    {
        $preg = '/^1[34578]\d{9}$/ims';
        if (preg_match($preg, $phone)) {
            return true;
        } else {
            return false;
        }
    }
}

/**
 * 验证身份证
 */
if (!function_exists('g_check_certificate')) {
    function g_check_certificate($certificate)
    {
        $preg = '/^\d{15}$)|(^\d{17}([0-9]|X)$/isu';
        if (preg_match($preg, $certificate)) {
            return true;
        } else {
            return false;
        }
    }
}

/**
 * 验证银行卡号
 */
if (!function_exists('g_check_bank_card')) {
    function g_check_bank_card($card)
    {
        $preg = '/^(\d{15}|\d{16}|\d{19})$/isu';
        if (preg_match($preg, $card)) {
            return true;
        } else {
            return false;
        }
    }
}

/**
 * 判断只能字母或者数字
 */
if (!function_exists('g_check_alpha_num')) {
    function g_check_alpha_num($str, $min = 0, $max = 0)
    {
        if (!g_check_between($str, $min, $max)) {
            return false;
        }

        $preg = '/^[a-zA-Z0-9]+$/u';
        if (preg_match($preg, $str)) {
            return true;
        }
        return false;
    }
}

/**
 * 判断只能数字
 */
if (!function_exists('g_check_num')) {
    function g_check_num($str, $min = 0, $max = 0)
    {
        if (!g_check_between($str, $min, $max)) {
            return false;
        }
        $preg = '/^[0-9]+$/u';
        if (preg_match($preg, $str)) {
            return true;
        }
        return false;
    }
}

/**
 * 判断只能字母加数字
 */
if (!function_exists('g_check_alpha_add_num')) {
    function g_check_alpha_add_num($str, $min = 0, $max = 0)
    {
        if (!g_check_between($str, $min, $max)) {
            return false;
        }
        $preg = "/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]*$/";;
        if (preg_match($preg, $str)) {
            return true;
        }
        return false;
    }
}

/**
 * 判断只能汉字
 */
if (!function_exists('g_check_hangzi')) {
    function g_check_hangzi($str, $min = 0, $max = 0)
    {
        if (!g_check_between($str, $min, $max)) {
            return false;
        }
        $preg = "/^[\x{4e00}-\x{9fa5}]+$/u";;
        if (preg_match($preg, $str)) {
            return true;
        }
        return false;
    }
}

/**
 * 判断密码复杂度
 */
if (!function_exists('g_check_password')) {
    function g_check_password($str)
    {
        $str_arr = str_split($str);
        if (count(array_unique($str_arr)) === 1) {
            return false;
        }
        $i = 0;
        $bool = false;
        foreach ($str_arr as $k => $v) {
            if ($k == 0) {
                $i = $v;
            } else {
                $i++;
                if ($i != $v) {
                    $bool = true;
                    break;
                }
            }
        }
        return $bool;
    }
}


if (!function_exists('g_check_between')) {
    function g_check_between($str, $min = 0, $max = 0)
    {
        if ($min < 0 || $max < 0) {
            return false;
        }

        if ($min > 0 && $max > 0 && $min > $max) {
            return false;
        }

        if (($min > 0 && strlen($str) < $min) || ($max > 0 && strlen($str) > $max)) {
            return false;
        }

        return true;
    }
}

/**
 * 创建文件夹
 */
if (!function_exists('g_mk_dirs')) {
    function g_mk_dirs($dir, $mode = 0777)
    {
        if (is_dir($dir) || @mkdir($dir, $mode, true)) return TRUE;
        if (!mkdir(dirname($dir), $mode, true)) return FALSE;
        return @mkdir($dir, $mode, true);
    }
}

if (!function_exists('g_rate_multi')) {
    function g_rate_multi($rate)
    {
        $index = strpos($rate, '%');
        if ($index !== false) {
            $final_rate = substr($rate, 0, $index);
            $final_rate = $final_rate * 1.0 / 100;
        } else {
            $final_rate = $rate;
        }

        return $final_rate;

    }
}

/**
 * 随机数
 */
if (!function_exists('numberRandom')) {
    function numberRandom($start = 70, $end = 100)
    {
        return mt_rand($start, $end);
    }
}

if (!function_exists('asMoney')) {
    function asMoney($number, $decimal = 6)
    {
//        $_number = sprintf('%0.' . $decimal . 'f', $number);
//        $_number = bcmul($number, pow(10, $decimal)) / pow(10, $decimal);
        $_number = number_format($number, $decimal, '.', '');
        if (stripos($_number, '.') === false) {
            $result = $_number;
        } else {
            $_number = rtrim($_number, '0');
            $result = $_number[strlen($_number) - 1] == '.' ? rtrim($_number, '.') : $_number;
        }

        return $result;
    }
}

if (!function_exists('asNumberFormat')) {
    function asNumberFormat($number, $decimal = 6)
    {
        return number_format($number, $decimal, '.', '');
    }
}

if (!function_exists('apiMoney')) {
    function apiMoney($number, $decimal = 4, $length = 0, $round = true)
    {
        if ($decimal > 18) {
            $decimal = 18;
        }
        $precision = $decimal;
        if ($number < bcdiv(1, pow(10, $precision), $precision)) {  //如果小于这个数则为0
            $_number = 0;
        } else {
            if ($number > bcdiv(1, pow(10, 4), 4)) {
                if ($round) {
                    $_number = round($number, $decimal);
                } else {
                    $_number = bcdiv(bcmul($number, pow(10, $decimal)), pow(10, $decimal), $decimal);
                }
            } else {
                $number = number_format($number . "", $precision); //之所以加这个数字太小会转为科学记数法，会报错
                $_number = bcdiv(bcmul($number, pow(10, $decimal)), pow(10, $decimal), $decimal);
                $_number = number_format($_number . "", $precision);
            }
        }
        if (stripos($_number, '.') === false) {
            $result = $_number;
        } else {
            $_number = rtrim($_number, '0');
            $result = $_number[strlen($_number) - 1] == '.' ? rtrim($_number, '.') : $_number;
        }

        if ($length > 0) {
            if (stripos($result, '.') !== false) {
                $digital = explode(".", $result);
                $integer = $digital[0];
                $decimals = $digital[1];
                $integerLength = strlen($integer);
                //不变
                if ($integerLength + strlen($decimals) < $length) {

                } else if ($integerLength >= $length) {
                    $result = $integer;
                } else {
                    $needDecimalLength = $length - $integerLength;
                    $result = $integer . "." . substr($decimals, 0, $needDecimalLength);
                }
            }
        }
        return $result;
    }
}

if (!function_exists('apiNewMoney')) {
    function apiNewMoney($number, $decimal = 8)
    {
        $precision = 8; //统一保留10位精度
        if (stripos($number, '.') !== false) { //说明有小数点
            if ($number < bcdiv(1, pow(10, $precision), $precision)) {  //如果小于这个数则为0
                $result = number_format($number . "", $precision);
            } else {
                if ($number > 1) {
                    $digital = explode(".", $number);
                    $result = number_format($digital[0], 0) . "." . $digital[1];
                } else {
                    $result = number_format($number . "", $precision);
                }
            }
        } else {
            $result = number_format($number . "", $precision);
        }
        if (stripos($result, '.') !== false) {
            $result = rtrim($result, '0');
            $result = $result[strlen($result) - 1] == '.' ? rtrim($result, '.') : $result;
        }
        return $result;
    }
}

/**
 * 获取时间戳
 */
if (!function_exists('g_get_times')) {
    function g_get_times($type, $timestamp = false)
    {
//        $base = strtotime("-1 day");
        $base = time();
        switch ($type) {
            case 1: //今日
                $date = date('Y-m-d');
                $start = strtotime($date);//今日
                $end = strtotime($date . "23:59:59");
                break;
            case 2://昨日
                $date = date('Y-m-d', strtotime('-1 day'));
                $start = strtotime($date);//今日
                $end = strtotime($date . "23:59:59");
                break;
            case 3: //本周
                $start_date = date('Y-m-d', (time() - ((date('w') == 0 ? 7 : date('w')) - 1) * 24 * 3600));
                $end_date = date('Y-m-d', (time() + (7 - (date('w') == 0 ? 7 : date('w'))) * 24 * 3600));
                $start = strtotime($start_date . "00:00:00");//今日
                $end = strtotime($end_date . "23:59:59");
                break;
            case 4: //上周
                $start_date = date('Y-m-d', strtotime('-2 monday', time()));
                $end_date = date('Y-m-d', strtotime('-1 sunday', time()));
                $start = strtotime($start_date . "00:00:00");//今日
                $end = strtotime($end_date . "23:59:59");
                break;
            case 5: //本月
                $start_date = date('Y-m-d', strtotime(date('Y-m', time()) . '-01 00:00:00'));
                $end_date = date('Y-m-d', strtotime(date('Y-m', time()) . '-' . date('t', time())));
                $start = strtotime($start_date . "00:00:00");//今日
                $end = strtotime($end_date . "23:59:59");
                break;
            case 6: //上月
                $start_date = date('Y-m-d', strtotime('-1 month', strtotime(date('Y-m', time()) . '-01 00:00:00')));
                $end_date = date('Y-m-d', strtotime(date('Y-m', time()) . '-01 00:00:00') - 86400);
                $start = strtotime($start_date . "00:00:00");//今日
                $end = strtotime($end_date . "23:59:59");
                break;
            case 7: //最近一天
                $date = date('Y-m-d', $base);
                $start = strtotime($date);
                $end = strtotime($date . "23:59:59");
                break;
            case 8: //最近一周
                $date = date('Y-m-d', $base);
                $startTimestamp = strtotime($date);
                $start = $startTimestamp - 86400 * 6;
                $end = ($startTimestamp + 86400 - 1);
                break;
            case 9: //最近一个月
                $date = date('Y-m-d', $base);
                $startTimestamp = strtotime($date);
                $start = $startTimestamp - 86400 * 29;
                $end = ($startTimestamp + 86400 - 1);
                break;
            case 10://最近3个月
                $date = date('Y-m-d', $base);
                $startTimestamp = strtotime($date);
                $start = $startTimestamp - 86400 * 89;
                $end = ($startTimestamp + 86400 - 1);
                break;
            default:
                $start = "";
                $end = "";
        }

        if ($timestamp) {
            return ['start' => $start, 'end' => $end];
        } else {
            return ['start' => date("Y-m-d H:i:s", $start), 'end' => date("Y-m-d H:i:s", $end)];
        }
    }
}

/**
 * 获取上传地址
 */
if (!function_exists('g_upload_path')) {
    function g_upload_path($path = "")
    {
        $date = date("Ymd");
        $year = substr($date, 0, 4);
        $month = substr($date, 4, 2);
        $day = substr($date, 6, 2);

        if ($path) {
            return "images/" . $year . "/" . $month . "/" . $day . "/" . $path;
        } else {
            return "images/" . $month . "/" . $day;
        }
    }
}

/**
 * 加密字符串
 */
if (!function_exists('g_str_encrypt')) {
    function g_str_encrypt($str, $startLen = 4, $endLen = 4, $count = 0)
    {
        $repStr = "";
        if (strlen($str) < ($startLen + $endLen + 1)) {
            return $str;
        }

        if (!$count) {
            $count = strlen($str) - $startLen - $endLen;
        }
        for ($i = 0; $i < $count; $i++) {
            $repStr .= "*";
        }

        return preg_replace('/(\d{' . $startLen . '})\d+(\d{' . $endLen . '})/', '${1}' . $repStr . '${2}', $str);
    }
}

if (!function_exists('g_http_protocol')) {
    function g_http_protocol()
    {
        return ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 'https://' : 'http://';
    }
}
if (!function_exists('g_admin_image')) {
    function g_admin_image($path = "")
    {
        if (strpos($path, "http") === 0) { //说明是全部地址
            return $path;
        }
        return g_http_protocol() . $_SERVER['HTTP_HOST'] . '/uploads';
    }
}

if (!function_exists('g_app_image')) {
    function g_app_image($path = "")
    {
        if (!$path) {
            return "";
        }
        if (strpos($path, "http") === 0) { //说明是全部地址
            return $path;
        }
        $host = isset($_SERVER['HTTP_HOST']) ? g_http_protocol() . $_SERVER['HTTP_HOST'] : config('app.url');
        return $path ? ($host . '/uploads/' . $path) : ($host . "/uploads/");
    }
}

if (!function_exists('g_get_time_range')) {
    function g_get_time_range($start, $end, $interval, $format, $last = true)
    {
        $start = is_numeric($start) ? $start : strtotime($start);
        $end = is_numeric($end) ? $end : strtotime($end);
        $ranges = [];
        if (!$last) {
            $end -= 1;
        }
        for ($start; $start <= $end; $start += $interval) {
            $ranges[] = date($format, $start);
        }
        return $ranges;
    }

}

if (!function_exists('g_get_now_time')) {
    function g_get_now_time($type = '1min', $time = null, $next = false)
    {
        $current = is_null($time) ? time() : $time;
        $yl = 60;
        if ($type == '5min') {
            $yl = 300;
        }
        if ($type == '15min') {
            $yl = 900;
        }
        if ($type == '30min') {
            $yl = 1800;
        }
        if ($type == '1h') {
            $yl = 3600;
        }

        if ($next) {
            $stamp = ($current % $yl) > 0 ? ($current - $current % $yl + $yl) : ($current + $yl);
        } else {
            $stamp = ($current % $yl) > 0 ? ($current - $current % $yl) : $current;
        }
        if ($type == '1d') {
            $stamp = strtotime(date('Y-m-d', $current));
        }

        if ($type == '1w') {
            if ($next) {
                $stamp = strtotime('next Sunday', $current);
            } else {
                $stamp = strtotime('next Sunday', $current) - 60 * 60 * 24 * 7;
            }
        }

        if ($type == '1mon') {
            $stamp = strtotime(date('Y-m', $current) . '-01');
        }

        if ($type == '1y') {
            $stamp = strtotime(date('Y-01-01 00:00:00', $current));
        }

        return $stamp;
    }

}

/**
 * PHP精确计算  主要用于货币的计算用法
 * @param $n1
 * @param $symbol + - * / %
 * @param $n2
 * @param string $scale 精度 默认为小数点后两位
 * @return  string
 */
function PriceCalculate($n1, $symbol, $n2, $scale = 2)
{
    $res = "";
    $n1 = number_format($n1, 8, '.', '');
    $n2 = number_format($n2, 8, '.', '');
    if (function_exists("bcadd")) {
        switch ($symbol) {
            case "+": //加法
                $res = bcadd($n1, $n2, $scale);
                break;
            case "-": //减法
                $res = bcsub($n1, $n2, $scale);
                break;
            case "*": //乘法
                if ($n1 == 0 || $n2 == 0) {
                    $res = 0;
                } else {
                    $res = bcmul($n1, $n2, $scale);
                }
                break;
            case "/": //除法
                if ($n1 == 0 || $n2 == 0) {
                    $res = 0;
                } else {
                    $res = bcdiv($n1, $n2, $scale);
                }
                break;
            case "%": //求余、取模
                $res = bcmod($n1, $n2, $scale);
                break;
            default:
                $res = "";
                break;
        }
    } else {
        switch ($symbol) {
            case "+": //加法
                $res = $n1 + $n2;
                break;
            case "-": //减法
                $res = $n1 - $n2;
                break;
            case "*": //乘法
                if ($n1 == 0 || $n2 == 0) {
                    $res = 0;
                } else {
                    $res = $n1 * $n2;
                }
                break;
            case "/": //除法
                if ($n1 == 0 || $n2 == 0) {
                    $res = 0;
                } else {
                    $res = $n1 / $n2;
                }
                break;
            case "%": //求余、取模
                $res = $n1 % $n2;
                break;
            default:
                $res = "";
                break;
        }
    }
    return $res == 0 ? 0 : (float)$res;
}

if (!function_exists('get_order_sn')) {
    // 生成订单编号
    function get_order_sn($prefix = '')
    {
        // 获取当前微秒数
        list($mSec, $sec) = explode(" ", microtime());
        $mSec = substr($mSec, 2, 3);

        // 产生随机数
        $rand = mt_rand(100, 999);

        $orderSn = $prefix . $sec . $mSec . $rand;

        return $orderSn;
    }
}

function getFullPath($path, $disk = 'public')
{
    if (Str::contains($path, '//')) {
        return $path;
    }
    return blank($path) ? '' : url(\Illuminate\Support\Facades\Storage::disk($disk)->url($path));
}

function custom_number_format($value, $decimals)
{
    return number_format($value, $decimals, '.', '');
}
